#include "emdata.h"

emdata emdata_init()
{
    emdata em = { .data = {0} };
    em.size = 0;
    em.pointer = 0;
    return em;
}

int emdata_size(emdata* em)
{
    return em->size;
}

bool emdata_pushback(emdata* em, double data)
{
    assert(em->size <= 5 && em->size >= 0);

    int index = (em->pointer + 1) % EMDATA_NUM;
    if (em->size == 0)
    {
        em->data[0] = data;
        //em->pointer++;
    }
    else
    {
        em->data[index] = data;
        em->pointer = index;
    }
    if (em->size < 5)
        em->size++;

    return true;
}

bool emdata_getarray(emdata* em, double* arr)
{
    assert(em->size <= 5 && em->size >= 0);
    if (em->size == 5)
    {
        for (int i = 0; i < em->size; i++)
        {
            arr[i] = em->data[(em->pointer + i + 1) % EMDATA_NUM];
        }
    }
    else
    {
        for (int i = 0; i < em->size; i++)
        {
            arr[i] = em->data[i];
        }
    }
}
